package com.hmsm.server.common;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import com.hmsm.server.util.ProperConfig;

/**
 * 全局参数管理
 * 
 * @author 舒俊
 * 
 *@version 1.0, 2012-11-22 下午02:32:56
 */
public class CommonUtil {
	
	// 软件版本号
	public static String version = "";
	
	private static Map<String, String> sysConfigMap; 
	
	public static Map<String, String> getSysConfigMap() {
		return sysConfigMap;
	}

	// 用户权限子功能码
	private static Map<Integer, List<String>> userFuncItemMap;
	
	public static Map<Integer, List<String>> getUserFuncItemMap() {
		return userFuncItemMap;
	}

	public static void setUserFuncItemMap(Map<Integer, List<String>> userFuncItemMap) {
		CommonUtil.userFuncItemMap = userFuncItemMap;
	}

	//系统运行模式(1.腾讯通 2.非腾讯通模式 3 .开发者模式)
	public static int runType;
	
	//系统维护(1:表示维护中 0:表示正常<系统可登陆运行使用>)
	//备注:在系统出现问题时启用，修改配置文件repairSys即可
	public static int repairSys = 0;
	// 1:启用密令验证;0:不启用验证密令
	public static int loginType = 0;

	//1检测客户端SID 0.不检测
	public static int scanSnCode;
	
	//扫描仪类型
	public static String scannerType;
	
	//扫描驱动名称
	public static String scannerName;
	
	//身份验证码
	public static Map<Integer,String> userCodeMap = new HashMap<Integer, String>();
	
	//瑞宏升统一用户登录地址
	public static String rhsUser;
	
	//用户统一管理系统接口验证
	public static String userApi;
	
	//图片查看器版本 0:表示启用旧版本 1：表示启用新版本
	public static Integer imgViewVersion;
	
	//省级平台访问密码
	public static String provinceCode;
	
	//市级平台访问密码
	public static String cityCode;

	// 是否使用登录验证码
	public static int validateCode;
	
	/**
	 * The constant exec业务线程池
	 */
	public static ExecutorService exec = Executors.newCachedThreadPool();
	
	public static void init() {
		version = ProperConfig.getApplicationProper().get("version");
		if(version==null)version="";
		// 初始化对象
//		userFuncMap =AppContextService.getUserRoleService().initUserFunc();
	
		// 获取用户权限的子功能码, 也应改由用户角色模块初始化时注入，先取消试试
//		userFuncItemMap =AppContextService.getUserRoleService().getUserFunc();
		
		// 初始化系统配置信息，改由系统配置服务注入 updateSysConfig()
//		sysConfigMap = AppContextService.getSysConfigService().initSysConfig();
	}

	/**
	 * 更新系统配置常量。在启动时由系统配置服务器更新	
	 * @param sysConfigMap
	 */
	public static void updateSysConfig(Map<String, String> newSysConfigMap) {
		sysConfigMap = newSysConfigMap;
	
		// 获取系统运行模式
		runType = parseInt(sysConfigMap.get("runType"));
		
		// 系统维护
		repairSys = parseInt(sysConfigMap.get("repairSys"));
	
		//检测客户端SID
		scanSnCode = parseInt(sysConfigMap.get("scanSnCode"));
		
		//扫描仪类型
		scannerType = sysConfigMap.get("scannerType"); 
		
		//扫描驱动名称
		scannerName = sysConfigMap.get("scannerName");
		
		//瑞宏升统一用户登录地址
		rhsUser = sysConfigMap.get("rhsUser");
	
		loginType = parseInt(sysConfigMap.get("loginType"));
		
		userApi=sysConfigMap.get("userApi");
		
		imgViewVersion = parseInteger(sysConfigMap.get("imgViewVersion"));
	
		provinceCode = sysConfigMap.get("provinceCode");
		
		cityCode = sysConfigMap.get("cityCode");
		
		validateCode = parseInt(sysConfigMap.get("validateCode"));
	}

	private static int parseInt(String value) {
		int result = 0;
		if (value!=null){
			result = Integer.parseInt(value); 
		}
		return result;
	}

	private static Integer parseInteger(String value) {
		Integer result = null;
		
		if (value!=null){
			result = Integer.parseInt(value); 
		}
		
		return result;
	}
}